﻿using System.Windows;

namespace Black.SurfaceToolkit.Controls
{
    /// <summary>
    /// Données pour les événements routés <see cref="E:Black.SurfaceToolkit.Controls.CanvasScatterView.CanvasDragStarted" /> et <see cref="E:Black.SurfaceToolkit.Controls.CanvasScatterView.CanvasDragEnded" />.
    /// </summary>
    public class DragItemRoutedEventArgs : RoutedEventArgs
    {
        #region Accesseurs

        /// <summary>
        /// Obtient l'identifiant du contact.
        /// </summary>
        public int ContactID
        {
            get;
            private set;
        }

        /// <summary>
        /// Obtient les informations du dépôt.
        /// </summary>
        public object Data
        {
            get;
            private set;
        }

        /// <summary>
        /// Obtient la position du dépôt.
        /// </summary>
        public Point Position
        {
            get;
            private set;
        }

        #endregion

        #region Constructeurs

        /// <summary>
        /// Initialise une nouvelle instance de <see cref="T:Black.SurfaceToolkit.Controls.DragItemRoutedEventArgs" />.
        /// </summary>
        /// <param name="p_oData">Informations du dépôt.</param>
        /// <param name="p_oPosition">Position du dépôt.</param>
        /// <param name="p_iContactId">Identifiant du contact.</param>
        public DragItemRoutedEventArgs(object p_oData, Point p_oPosition, int p_iContactId)
            : base()
        {
            this.Data = p_oData;
            this.Position = p_oPosition;
            this.ContactID = p_iContactId;
        }

        /// <summary>
        /// Initialise une nouvelle instance de <see cref="T:Black.SurfaceToolkit.Controls.DragItemRoutedEventArgs" />.
        /// </summary>
        /// <param name="p_oEvent">Evénement routé associé.</param>
        /// <param name="p_oData">Informations du dépôt.</param>
        /// <param name="p_oPosition">Position du dépôt.</param>
        /// <param name="p_iContactId">Identifiant du contact.</param>
        public DragItemRoutedEventArgs(RoutedEvent p_oEvent, object p_oData, Point p_oPosition, int p_iContactId)
            : base(p_oEvent)
        {
            this.Data = p_oData;
            this.Position = p_oPosition;
            this.ContactID = p_iContactId;
        }

        /// <summary>
        /// Initialise une nouvelle instance de <see cref="T:Black.SurfaceToolkit.Controls.DragItemRoutedEventArgs" />.
        /// </summary>
        /// <param name="p_oEvent">Evénement routé associé.</param>
        /// <param name="p_oSource">Source de l'événement.</param>
        /// <param name="p_oData">Informations du dépôt.</param>
        /// <param name="p_oPosition">Position du dépôt.</param>
        /// <param name="p_iContactId">Identifiant du contact.</param>
        public DragItemRoutedEventArgs(RoutedEvent p_oEvent, object p_oSource, object p_oData, Point p_oPosition, int p_iContactId)
            : base(p_oEvent, p_oSource)
        {
            this.Data = p_oData;
            this.Position = p_oPosition;
            this.ContactID = p_iContactId;
        }

        #endregion
    }
}
